package com.ebupt.migu.music.autoTri.Mapper;

import com.baomidou.dynamic.datasource.annotation.DS;
import org.apache.ibatis.annotations.Mapper;

import java.lang.reflect.MalformedParameterizedTypeException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Created by Intellij IDEA.
 * User:  liuyangyang@cd.ebupt.com
 * Date:  2020/6/9
 */
@Mapper
@DS("mysql_mg")
public interface AutoTriMapper {

    /**
     * 创建运营计划
     *
     * @param map
     */
    public void createOperPlan(Map<String, Object> map);

    /**
     * 更新运营计划
     *
     * @param map
     */
    public void updateOperPlan(Map<String, Object> map);

    /**
     * 查询运营计划列表
     *
     * @return
     */
    public List<HashMap<String, Object>> queryOperPlan();

    /**
     * 创建自动触发策略
     *
     * @param map
     */
    public void createAutoTriTac(Map<String, Object> map);

    /**
     * 记录策略触发条件
     *
     * @param map
     */
    public void createAutoTriTacInfo(Map<String, Object> map);

    /**
     * 记录短信自动触发策略详情
     *
     * @param map
     */
    public void createAutoTriTacSMS(Map<String, Object> map);

    /**
     * 记录PUSH自动触发策略详情
     *
     * @param map
     */
    public void createAutoTriTacPUSH(Map<String, Object> map);

    /**
     * 记录消息通知自动触发策略详情
     *
     * @param map
     */
    public void createAutoTriTacMSG(Map<String, Object> map);

    /**
     * 记录弹窗自动触发策略详情
     *
     * @param map
     */
    public void createAutoTriTacPOP(Map<String, Object> map);

    /**
     * 统计条件查询的策略数量
     *
     * @param map
     * @return
     */
    public Integer queryAutoTriCount(Map<String, Object> map);

    /**
     * 查询策略列表
     *
     * @param map
     * @return
     */
    public List<HashMap<String, Object>> queryAutoTris(Map<String, Object> map);

    /**
     * 查询指定策略详情
     *
     * @param map
     * @return
     */
    public Map<String, Object> queryAutoTriTacByTacID(Map<String, Object> map);

    /**
     * 查询指定策略触发条件
     *
     * @param map
     * @return
     */
    public Map<String, Object> queryAutoTriTacInfoByTacID(Map<String, Object> map);

    /**
     * 查询短信策略详情
     *
     * @param map
     * @return
     */
    public Map<String, Object> queryAutoTriTacSMSByTacID(Map<String, Object> map);

    /**
     * 查询PUSH策略详情
     *
     * @param map
     * @return
     */
    public Map<String, Object> queryAutoTriTacPUSHByTacID(Map<String, Object> map);

    /**
     * 查询消息通知策略详情
     *
     * @param map
     * @return
     */
    public Map<String, Object> queryAutoTriTacMSGByTacID(Map<String, Object> map);

    /**
     * 查询弹窗策略详情
     *
     * @param map
     * @return
     */
    public Map<String, Object> queryAutoTriTacPOPByTacID(Map<String, Object> map);

    /**
     * 更新指定策略详情
     *
     * @param map
     * @return
     */
    public void updateAutoTriTacByTacID(Map<String, Object> map);

    /**
     * 更新指定策略触发条件
     *
     * @param map
     * @return
     */
    public void updateAutoTriTacInfoByTacID(Map<String, Object> map);

    /**
     * 更新短信策略详情
     *
     * @param map
     * @return
     */
    public void updateAutoTriTacSMSByTacID(Map<String, Object> map);

    /**
     * 更新PUSH策略详情
     *
     * @param map
     * @return
     */
    public void updateAutoTriTacPUSHByTacID(Map<String, Object> map);

    /**
     * 更新消息通知策略详情
     *
     * @param map
     * @return
     */
    public void updateAutoTriTacMSGByTacID(Map<String, Object> map);

    /**
     * 更新弹窗策略详情
     *
     * @param map
     * @return
     */
    public void updateAutoTriTacPOPByTacID(Map<String, Object> map);

    /**
     * 暂停策略
     *
     * @param map
     */
    public void pause(Map<String, Object> map);

    /**
     * 创建审批记录
     *
     * @param map
     */
    public void createApproveRecord(Map<String, Object> map);

    /**
     * 查询指定条件下审批记录条数
     *
     * @param map
     * @return
     */
    public Integer queryApproveRecordsCount(Map<String, Object> map);

    /**
     * 查询审批记录列表
     *
     * @param map
     * @return
     */
    public List<HashMap<String, Object>> queryApproveRecords(Map<String, Object> map);

    /**
     * 查询制定策略审批记录
     *
     * @param tacId
     * @return
     */
    public List<HashMap<String, Object>> queryApproveHistoryByTacID(String tacId);

    /**
     * 是否存在同名策略名称
     *
     * @return
     */
    public boolean isTacNameExist(Map<String, Object> params);

    /**
     * 查询名单中的电话号码
     *
     * @param rosterId
     * @return
     */
    public List<String> queryMsisdns(String rosterId);

    /**
     * 查询名单中的uid
     *
     * @param rosterId
     * @return
     */
    public List<String> queryUUIDs(String rosterId);

    /**
     * 跟据发送者昵称查询消息类型详情
     * @param msgNickName
     * @return
     */
    Map<String, Object> queryMsgTypeInfo(String msgNickName);

    void revocationStrategyById(Map<String, Object> params);
}
